package com.jrx.anytxn.param.service.investor;

import com.jrx.anytxn.common.exception.TxnBizException;
import com.jrx.anytxn.common.exception.TxnException;
import com.jrx.anytxn.i18n.response.TxnPage;
import com.jrx.anytxn.param.dto.investor.PrInvestorPreterminationFeeReq;
import com.jrx.anytxn.param.dto.investor.PrInvestorPreterminationFeeRes;
import com.jrx.anytxn.param.entity.PrInvestorPreterminationFee;

/**
 * 出资方提前结清手续费表 业务接口
 *
 * @author 黄秋平
 * @date 2020-05-20 10:53
 **/
public interface IPrInvestorPreterminationFeeService {

    /**
     * 根据租户ID分页查询提前结清费参数信息
     * @param pageNum
     * @param pageSize
     * @param tenantId
     * @return
     * @throws TxnException
     */
    TxnPage<PrInvestorPreterminationFeeRes> findAllPageByTenId(Integer pageNum, Integer pageSize, String tenantId) throws TxnException;

    /**
     * 添加提前结清费参数
     *
     * @param prPreterminationFeeTableReq 提前结清费请求实体
     * @return com.jrx.anytxn.param.dto.investor.PrInvestorPreterminationFeeRes
     * @throws TxnException
     */
    PrInvestorPreterminationFeeRes addPreterminationFeeTable(PrInvestorPreterminationFeeReq prPreterminationFeeTableReq) throws TxnException;

    /**
     * 更新提前结清费参数
     *
     * @param prPreterminationFeeTableReq 提前结清费参数入参对象
     * @return PrInvestorPreterminationFeeRes 提前结清费参数响应参数
     * @throws TxnException
     */
    PrInvestorPreterminationFeeRes modifyPreterminationFeeTable(PrInvestorPreterminationFeeReq prPreterminationFeeTableReq) throws TxnException;

    /**
     * 通过租户ID和费用表ID删除提前结清费参数
     *
     * @param tenantId 租户ID
     * @param investorPreterminationFeeId    费用表ID
     * @return java.lang.Boolean
     * @throws TxnException
     */
    Boolean removeByTenIdAndFeeId(String tenantId, String investorPreterminationFeeId) throws TxnException;

    /**
     * 通过租户ID和费用表ID查询提前结清费参数
     *
     * @param tenantId 租户ID
     * @param investorPreterminationFeeId    提前结清费用表ID
     * @return com.jrx.anytxn.param.dto.investor.PrInvestorPreterminationFeeRes
     * @throws TxnException
     */
    PrInvestorPreterminationFeeRes findByTenIdAndFeeId(String tenantId, String investorPreterminationFeeId) throws TxnException;

    /**
     * 根据字段查询
     * @param investorPreterminationFeeId
     * @param tenantId
     * @return
     * @throws TxnBizException
     */
    PrInvestorPreterminationFee findByPreterminationFeeId(String investorPreterminationFeeId, String tenantId) throws TxnBizException;

}
